﻿using LY.Manage.DAL;
using LY.Manage.IDAL;
using LY.Manage.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LY.Manage.DALFactory
{
    /// <summary>
    /// 数据会话层:就是一个工厂类,负责完成所有数据操作类实例的创建,然后业务层通过数据
    /// 会话层来获取要操作数据类的实例。所以数据会话层将业务层与数据层解耦
    /// 在数据会话层中提供一个方法：完成所有数据的保存(一个业务有可能与多张表操作,连一次数据库,一次提交数据库)
    /// </summary>
    public partial class DBSession : IDBSession
    {


        //OAEntities Db = new OAEntities(); 

        /// <summary>
        /// 调用DAL中DBContextFactory中的CreateDbContext()
        /// </summary>
        public DbContext Db
        {
            get
            {
                return DAL.DBContextFactory.CreateDbContext();
            }
        }


        /// <summary>
        /// 一个业务中经常涉及到对多张表操作,我们希望连接一次数据库
        /// 完成对多张表数据的操作。提高性能。
        /// 工作单元模式
        /// </summary>
        /// <returns></returns>
        public bool SaveChanges()
        {
            return Db.SaveChanges() > 0;
        }

        /* //利用T4生成以后删除
        private IUserInfoDal _UserInfoDal;
        public IUserInfoDal UserInfoDal
        {
            get
            {
                if (_UserInfoDal==null)
                {
                    //_UserInfoDal = new UserInfoDal();
                    //通过抽象工厂封装了类的实例的创建
                    _UserInfoDal = AbstractFactory.CreateUserInfoDal();
                }
                return _UserInfoDal;

            }
            set
            {
                _UserInfoDal = value;
            }
        }
         * 
         * 
        /
        /*
        public IDAL.IUserInfoDal CreateUserInfoDal()
        {
            return new DAL.UserInfoDal();
        }
         * */





        
    }
}
